!pip install yfinance==0.1.67
!mamba install bs4==4.10.0 -y
!pip install nbformat==4.2.0
Collecting yfinance==0.1.67
Downloading yfinance-0.1.67-py2.py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: pandas>=0.24 in /opt/anaconda3/lib/python3.12/site-packages (from yfinance==0.1.67) (2.2.2)
Requirement already satisfied: numpy>=1.15 in /opt/anaconda3/lib/python3.12/site-packages (from yfinance==0.1.67) (1.26.4)
Requirement already satisfied: requests>=2.20 in /opt/anaconda3/lib/python3.12/site-packages (from yfinance==0.1.67) (2.32.2)
Requirement already satisfied: multitasking>=0.0.7 in /opt/anaconda3/lib/python3.12/site-packages (from yfinance==0.1.67) (0.0.11)
Requirement already satisfied: lxml>=4.5.1 in /opt/anaconda3/lib/python3.12/site-packages (from yfinance==0.1.67) (5.2.1)
Requirement already satisfied: python-dateutil>=2.8.2 in /opt/anaconda3/lib/python3.12/site-packages (from pandas>=0.24->yfinance==0.1.67) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /opt/anaconda3/lib/python3.12/site-packages (from pandas>=0.24->yfinance==0.1.67) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in /opt/anaconda3/lib/python3.12/site-packages (from pandas>=0.24->yfinance==0.1.67) (2023.3)
Requirement already satisfied: charset-normalizer<4,>=2 in /opt/anaconda3/lib/python3.12/site-packages (from requests>=2.20->yfinance==0.1.67) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in /opt/anaconda3/lib/python3.12/site-packages (from requests>=2.20->yfinance==0.1.67) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/anaconda3/lib/python3.12/site-packages (from requests>=2.20->yfinance==0.1.67) (2.2.2)
Requirement already satisfied: certifi>=2017.4.17 in /opt/anaconda3/lib/python3.12/site-packages (from requests>=2.20->yfinance==0.1.67) (2024.7.4)
Requirement already satisfied: six>=1.5 in /opt/anaconda3/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=0.24->yfinance==0.1.67) (1.16.0)
Downloading yfinance-0.1.67-py2.py3-none-any.whl (25 kB)
Installing collected packages: yfinance
Attempting uninstall: yfinance
Found existing installation: yfinance 0.2.43
Uninstalling yfinance-0.2.43:
Successfully uninstalled yfinance-0.2.43
Successfully installed yfinance-0.1.67
zsh:1: command not found: mamba
Collecting nbformat==4.2.0
Downloading nbformat-4.2.0-py2.py3-none-any.whl.metadata (1.1 kB)
Requirement already satisfied: ipython-genutils in /opt/anaconda3/lib/python3.12/site-packages (from nbformat==4.2.0) (0.2.0)
Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /opt/anaconda3/lib/python3.12/site-packages (from nbformat==4.2.0) (4.19.2)
Requirement already satisfied: jupyter-core in /opt/anaconda3/lib/python3.12/site-packages (from nbformat==4.2.0) (5.7.2)
Requirement already satisfied: traitlets>=4.1 in /opt/anaconda3/lib/python3.12/site-packages (from nbformat==4.2.0) (5.14.3)
Requirement already satisfied: attrs>=22.2.0 in /opt/anaconda3/lib/python3.12/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat==4.2.0) (23.1.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/anaconda3/lib/python3.12/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat==4.2.0) (2023.7.1)
Requirement already satisfied: referencing>=0.28.4 in /opt/anaconda3/lib/python3.12/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat==4.2.0) (0.30.2)
Requirement already satisfied: rpds-py>=0.7.1 in /opt/anaconda3/lib/python3.12/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat==4.2.0) (0.10.6)
Requirement already satisfied: platformdirs>=2.5 in /opt/anaconda3/lib/python3.12/site-packages (from jupyter-core->nbformat==4.2.0) (3.10.0)
Downloading nbformat-4.2.0-py2.py3-none-any.whl (153 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 153.3/153.3 kB 4.0 MB/s eta 0:00:00
Installing collected packages: nbformat
Attempting uninstall: nbformat
Found existing installation: nbformat 5.9.2
Uninstalling nbformat-5.9.2:
Successfully uninstalled nbformat-5.9.2
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
anaconda-client 1.12.3 requires nbformat>=4.4.0, but you have nbformat 4.2.0 which is incompatible.
jupyter-server 2.14.1 requires nbformat>=5.3.0, but you have nbformat 4.2.0 which is incompatible.
nbclient 0.8.0 requires nbformat>=5.1, but you have nbformat 4.2.0 which is incompatible.
nbconvert 7.10.0 requires nbformat>=5.7, but you have nbformat 4.2.0 which is incompatible.
Successfully installed nbformat-4.2.0
import yfinance as yf
import pandas as pd
import requests
from bs4 import BeautifulSoup
import plotly.graph_objects as go
from plotly.subplots import make_subplots
tesla = yf.Ticker("TSLA")
tesla_data = tesla.history(period="max")
tesla_data.reset_index(inplace=True)
tesla_data.head()
| Date | Open | High | Low | Close | Volume | Dividends | Stock Splits | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2010-06-29 00:00:00-04:00 | 1.266667 | 1.666667 | 1.169333 | 1.592667 | 281494500 | 0.0 | 0.0 |
| 1 | 2010-06-30 00:00:00-04:00 | 1.719333 | 2.028000 | 1.553333 | 1.588667 | 257806500 | 0.0 | 0.0 |
| 2 | 2010-07-01 00:00:00-04:00 | 1.666667 | 1.728000 | 1.351333 | 1.464000 | 123282000 | 0.0 | 0.0 |
| 3 | 2010-07-02 00:00:00-04:00 | 1.533333 | 1.540000 | 1.247333 | 1.280000 | 77097000 | 0.0 | 0.0 |
| 4 | 2010-07-06 00:00:00-04:00 | 1.333333 | 1.333333 | 1.055333 | 1.074000 | 103003500 | 0.0 | 0.0 |
url = "https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0220EN-SkillsNetwork/labs/project/revenue.htm"
html_data = requests.get(url).text
soup = BeautifulSoup(html_data, 'html5lib')
tesla_revenue = pd.DataFrame(columns=["Date", "Revenue"])
for row in soup.find("tbody").find_all('tr'):
col = row.find_all("td")
date = col[0].text
revenue = col[1].text
# Finally we append the data of each row to the table
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/55052665.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
tesla_revenue = tesla_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
tesla_revenue["Revenue"] = tesla_revenue['Revenue'].str.replace(',|\$',"")
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/349343550.py:1: FutureWarning: The default value of regex will change from True to False in a future version.
tesla_revenue["Revenue"] = tesla_revenue['Revenue'].str.replace(',|\$',"")
tesla_revenue.dropna(inplace=True)
tesla_revenue = tesla_revenue[tesla_revenue['Revenue'] != ""]
tesla_revenue.tail()
| Date | Revenue | |
|---|---|---|
| 8 | 2013 | 2013 |
| 9 | 2012 | 413 |
| 10 | 2011 | 204 |
| 11 | 2010 | 117 |
| 12 | 2009 | 112 |
game_stop = yf.Ticker("GME")
gme_data = game_stop.history(period="max")
gme_data.reset_index(inplace=True)
gme_data.head()
| Date | Open | High | Low | Close | Volume | Dividends | Stock Splits | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2002-02-13 00:00:00-05:00 | 1.620128 | 1.693350 | 1.603296 | 1.691666 | 76216000 | 0.0 | 0.0 |
| 1 | 2002-02-14 00:00:00-05:00 | 1.712707 | 1.716074 | 1.670626 | 1.683250 | 11021600 | 0.0 | 0.0 |
| 2 | 2002-02-15 00:00:00-05:00 | 1.683250 | 1.687458 | 1.658001 | 1.674834 | 8389600 | 0.0 | 0.0 |
| 3 | 2002-02-19 00:00:00-05:00 | 1.666418 | 1.666418 | 1.578047 | 1.607504 | 7410400 | 0.0 | 0.0 |
| 4 | 2002-02-20 00:00:00-05:00 | 1.615920 | 1.662210 | 1.603296 | 1.662210 | 6892800 | 0.0 | 0.0 |
url = "https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0220EN-SkillsNetwork/labs/project/stock.html"
html_data_2 = requests.get(url).text
soup = BeautifulSoup(html_data_2, 'html5lib')
gme_revenue = pd.DataFrame(columns=["Date", "Revenue"])
for row in soup.find("tbody").find_all('tr'):
col = row.find_all("td")
date = col[0].text
revenue = col[1].text
# Finally we append the data of each row to the table
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
gme_revenue["Revenue"] = gme_revenue['Revenue'].str.replace(',|\$',"")
gme_revenue.dropna(inplace=True)
gme_revenue = gme_revenue[gme_revenue['Revenue'] != ""]
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:7: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
gme_revenue = gme_revenue.append({"Date":date, "Revenue":revenue}, ignore_index=True)
/var/folders/yw/zkbkg7ss4wn9s28n91vf7gz40000gn/T/ipykernel_3008/4016603863.py:8: FutureWarning: The default value of regex will change from True to False in a future version.
gme_revenue["Revenue"] = gme_revenue['Revenue'].str.replace(',|\$',"")
gme_revenue.tail()
| Date | Revenue | |
|---|---|---|
| 11 | 2009 | 8806 |
| 12 | 2008 | 7094 |
| 13 | 2007 | 5319 |
| 14 | 2006 | 3092 |
| 15 | 2005 | 1843 |
def make_graph(stock_data, revenue_data, stock):
fig = make_subplots(rows=2, cols=1, shared_xaxes=True, subplot_titles=("Historical Share Price", "Historical Revenue"), vertical_spacing = .3)
stock_data_specific = stock_data[stock_data.Date <= '2021--06-14']
revenue_data_specific = revenue_data[revenue_data.Date <= '2021-04-30']
fig.add_trace(go.Scatter(x=pd.to_datetime(stock_data_specific.Date, infer_datetime_format=True), y=stock_data_specific.Close.astype("float"), name="Share Price"), row=1, col=1)
fig.add_trace(go.Scatter(x=pd.to_datetime(revenue_data_specific.Date, infer_datetime_format=True), y=revenue_data_specific.Revenue.astype("float"), name="Revenue"), row=2, col=1)
fig.update_xaxes(title_text="Date", row=1, col=1)
fig.update_xaxes(title_text="Date", row=2, col=1)
fig.update_yaxes(title_text="Price ($US)", row=1, col=1)
fig.update_yaxes(title_text="Revenue ($US Millions)", row=2, col=1)
fig.update_layout(showlegend=False,
height=900,
title=stock,
xaxis_rangeslider_visible=True)
fig.show()
make_graph(tesla_data, tesla_revenue, "Tesla")
make_graph(gme_data, gme_revenue, "GameStop")